package com.sistemagestion.BO;

import java.util.List;

import com.sistemagestion.DAO.DetalleFacturaRepository;
import com.sistemagestion.DAO.FacturaRepository;
import com.sistemagestion.Entities.DetalleFactura;
import com.sistemagestion.Entities.Factura;

public class FacturaBO {

	private FacturaRepository repository = new FacturaRepository();
	private DetalleFacturaRepository repositoryDetalle = new DetalleFacturaRepository();
	
	private ProductoBO productobo = new ProductoBO();

	public long saveFactura(Factura _Factura) {
		if (_Factura != null)
			return repository.saveObject(_Factura);
		else
			return 0;
	}

	public void saveFacturaDatelle(Factura _Factura,
			List<DetalleFactura> _Detalle) {
		long idFactura = saveFactura(_Factura);
		
		for (DetalleFactura detalleFactura : _Detalle) {
			detalleFactura.setIdFactura((int)idFactura);
			repositoryDetalle.saveObject(detalleFactura);
			productobo.RestarStock(detalleFactura.getIdProducto(), detalleFactura.getCantidad());
		}
	}
	public List<Factura> getAll() {
		return repository.getAll();
	}

	public Factura getById(int IdFactura) {
		try {
			return repository.getById(IdFactura);
		} catch (Exception ex) {
			return null;
		}
	}

	public int getProxNumeroFactura() {
		String strSQL = "SELECT MAX(NumeroFactura) FROM FACTURA";
		return (repository.ExecuteSqlScalarQuery(strSQL) + 1);
	}
}
